package cn.edu.ustc.xrovers.service;

import javax.servlet.http.HttpSession;

import cn.edu.ustc.xrovers.model.BalanceSheet;
import cn.edu.ustc.xrovers.model.CashFlowStatement;
import cn.edu.ustc.xrovers.model.Company;
import cn.edu.ustc.xrovers.model.IncomeStatement;
import cn.edu.ustc.xrovers.model.Loan;
import cn.edu.ustc.xrovers.model.NonFinancialInformation;

/**
 * 处理企业信息的Service接口
 * @author paddy
 *
 */
public interface HandleCompanyInfoService {

	/**
	 * 保存企业基本信息，并将其信息放入session中
	 * @param session HttpSession对象
	 * @param company Company持久化对象
	 * @return 保存成功返回true，否则返回false
	 */
	public boolean saveCoBaseInfo(HttpSession session,Company company, final String role);
	
	/**
	 * 保存担保企业的基本信息
	 * @param company Company持久化对象
	 * @return 保存成功返回true，否则返回false
	 */
	public boolean saveGuaBaseInfo(HttpSession session,Company guaCompany,final String role);
	
	/**
	 * 保存企业财务信息
	 * @param bs BalanceSheet资产负债持久化对象
	 * @param cfs CashFlowStatement现金流量持久化对象
	 * @param is IncomeStatement利润持久化对象
	 * @param company Company持久化对象
	 * @return 保存成功返回true，否则返回false
	 */
	public boolean saveCoFinInfo(HttpSession session, BalanceSheet bs, CashFlowStatement cfs, IncomeStatement is);
	
	/**
	 * 保存担保企业财务信息
	 * @param bs BalanceSheet资产负债持久化对象
	 * @param cfs CashFlowStatement现金流量持久化对象
	 * @param is IncomeStatement利润持久化对象
	 * @param company Company持久化对象
	 * @return 保存成功返回true，否则返回false
	 */
	public boolean saveGuaFinInfo(HttpSession session, BalanceSheet bs, CashFlowStatement cfs, IncomeStatement is);
	
	/**
	 * 保存企业非财务信息
	 * @param nfi NonFinancialInformation持久化类
	 * @param company Company持久化类
	 * @return 保存成功返回true，否则返回false
	 */
	public boolean saveCoNonFinInfo(HttpSession session, NonFinancialInformation nfi);
	
	/**
	 * 保存担保企业非财务信息
	 * @param nfi NonFinancialInformation持久化类
	 * @param company Company持久化类
	 * @return 保存成功返回true，否则返回false
	 */
	public boolean saveGuaNonFinInfo(HttpSession session, NonFinancialInformation nfi);
	
	/**
	 * 保存贷款基本信息
	 * 金额，担保方式，日期
	 * @param session HttpSession
	 * @param loan Loan实体类对象，贷款基本信息
	 * @return 保存成功返回true，否则返回false
	 */
	public boolean saveLoanInfo(HttpSession session, Loan loan, String guaWay);
	
	/**
	 * 根据报表名称查询相应报表
	 * @param reportname 报表名称
	 * @param loanId 贷款编号
	 */
	public Object findReport(String reportname, String loanId);
	
	/**
	 * 根据贷款编号查找贷款信息
	 * @param loanId 贷款编号
	 * @return Loan实体类对象
	 */
	public Object findLoanInfo(String loanId);
	
	/**
	 * 更新报表信息
	 * @param entity 报表信息实体类
	 */
	public void updateInfo(Object entity);
}
